package com.example.demo.ykj.counts;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author zjq
 * @version 创建时间：2021-12-17 15:06:52
 */
@Service
public class CountsServiceImpl implements CountsService {

    String PATH = "I:\\java\\";

    @Autowired
    private CountsRepository countsRepository;
    @Autowired
    private CountsDAO countsDAO;

    @Override
    public void importTemplates() {
        // 写法1：JDK8+ ,不用额外写一个DemoDataListener
        String fileName = PATH + "a1.xls";
        // 这里 需要指定读用哪个class去读，然后读取第一个sheet 文件流会自动关闭
        // 这里每次会读取3000条数据 然后返回过来 直接调用使用数据就行
        EasyExcel.read(fileName, Counts.class, new PageReadListener<Counts>(dataList -> {
            // 这里 需要指定读用哪个class去读，然后读取第一个sheet 文件流会自动关闭
            for (Counts demoData : dataList) {
                System.out.println("读取到一条数据{}" + JSON.toJSONString(demoData));
                countsRepository.save(demoData);
            }
        })).sheet().doRead();
    }

    @Override
    public void importTemplatess() {
        // 有个很重要的点 DemoDataListener 不能被spring管理，要每次读取excel都要new,然后里面用到spring可以构造方法传进去
        // 写法3：
        String fileName = PATH + "a2.xlsx";
        // 这里 需要指定读用哪个class去读，然后读取第一个sheet 文件流会自动关闭
        EasyExcel.read(fileName, Counts.class, new CountsListener(countsDAO)).sheet().doRead();
    }

}
